package com.jinke.api.modules.ums.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jinke.api.common.api.CommonPage;
import com.jinke.api.common.api.CommonResult;
import com.jinke.api.modules.ums.model.Channel;
import com.jinke.api.modules.ums.request.GetChannelRequest;
import com.jinke.api.modules.ums.request.UserChannelRequest;
import com.jinke.api.modules.ums.vo.UserChannelVO;

import java.util.List;
import java.util.Set;

/**
 * 后台管理员管理Service
 * Created by macro on 2018/4/26.
 */
public interface ChannelService extends IService<Channel> {

    /**
     * 查询用户的渠道，只返回当前状态是开的渠道
     * @param userId
     * @param serviceCode
     * @param channelId
     * @return
     */
    List<UserChannelVO> getOnChannels(Integer userId, String serviceCode, Integer channelId);

    /**
     * 通过主键查渠道
     * @param userId
     * @param channelId
     * @return
     */
    UserChannelVO getChannelById(Integer userId,Integer channelId);

    /**
     * 通过serviceCode查用户授权的渠道 userId在内层自取
     * @param serviceCode
     * @return
     */
    List<UserChannelVO> getOnChannelsByUserIdAndServiceCode( String serviceCode);

    /**
     * 查询用户的授权渠道
     * @param request
     * @return
     */
    CommonResult<CommonPage<UserChannelVO>> getUserChannel(UserChannelRequest request);


    /*
    通过渠道id查下级服务
     */
    List<Channel> getServiceByChannelIds(List<Integer> ids);

    /**
     * 通过主键批量拓展查询
     * @param ids
     * @return
     */
    List<Channel> getChannelByPKs(Set<Integer> ids);

    Page<Channel> pageList(GetChannelRequest request);
}
